<?php

/**
 * Diese Klasse repräseniert ein Recht.
 * 
 * @author Shane
 *
 */
class Right {
	
	// Die ID des Rechts
	private $ID;
	
	// Der Name des Rechts
	private $Name;
	
	/**
	 * Der Konstruktor kann bis zu 2 Argumente bekommen.
	 * Die Anzahl der Argumente wird ermittelt und dann entsprechend
	 * einer der folgenden Konstruktoren aufgerufen.
	 * 
	 * @example (), ($name), ($id, $name)
	 */
	public function __construct() {
		// Die Argumente werden ausgelesen
		$args = func_get_args();
		// Die ANzahl der Argumente wird ermittelt
		$num_args = count($args);
		// Wenn zwischen 0 und 3 Argumente übergeben wurden,
		// dann wird einer der folgenden Konstruktoren aufgerufen
		if ($num_args > 0 and $num_args < 3) {
			
			// debug
			if (DEBUG_ENABLED)
				DebugQuery::getInstance()->append("Calling: %s\n", '__construct_'.$num_args.'('.implode(",", $args) .')');
				
			call_user_func_array(array($this, '__construct_'.$num_args), $args);
		}
	}
	
	/**
	 * Der Konstruktor mit 1 Argument
	 * 
	 * @param string $name
	 */
	public function __construct_1($name) {
		$this->Name = $name;
	}
	
	/**
	 * Der Konstruktor mit 2 Argumenten
	 * 
	 * @param integer $id
	 * @param string $name
	 */
	public function __construct_2($id, $name) {
		$this->ID 	= $id;
		$this->Name = $name;
	}
	
	/**
	 * Gibt die id zurück
	 */
	public function get_id() {
		return $this->ID;
	}
	
	/**
	 * Gibt den Namen zurück
	 */
	public function get_name() {
		return $this->Name;
	}
	
	/**
	 * Setzt die id
	 * 
	 * @param integer $id
	 */
	public function set_id($id) {
		$this->ID = $id;
	}
	
	/**
	 * Setzt den Namen
	 * 
	 * @param string $name
	 */
	public function set_name($name) {
		$this->Name = $name;
	}
	
	/**
	 * Der Destruktor
	 */
	function __destruct() {
		if (DEBUG_ENABLED)
			DebugQuery::getInstance()->append("Destroying Right object with id: %d\n", $this->ID);
	}
}

?>